#!/usr/bin/python
# -*-coding:Latin-1 -*

#-----------------------------------------
# Partie.py is a part of mahjong-2d project.
# Name:         Partie.py
# Author:       Antoine Morillon
# Copyright:    (C) 2013 Antoine Morillon, Matthieu Morillon
# Licence:      GNU General Public Licence version 3
# Website:      
# Email:        
#-----------------------------------------

import Carte as C

class Partie:
    """Contient les données liées à une partie en cours de jeu """
    score = 0
    nombre_cartes_jouees = 0#nombre de cartes finies dans cette partie
    pas_score = 100
    etat = 0#0 pas commencé, 1 carte en cours, 2 pause, 3 game over,4 carteGG
    carte = None#carte en cours

    #Todo nb_joker: mettre à 3, 96 c'est juste pour en abuser
    nb_joker = 10#nombre de joker disponible pour trouver une paire via clicDroit
    def __init__(self):
        self.score = 0
        self.etat = 0
        self.carte = C.Carte()
        self.carte.set_ptr_partie(self)
        self.nombre_cartes_jouees = 0
        self.partie_terminee = False
        
    def set_ptr_main(self, ptr_main):
        self.ptr_main = ptr_main


    def nouvelleCarte(self):
        #Ajoute le score de la dernière carte au nouveau score et=>NON on change
        """cree nouvelle carte """
        self.carte = C.Carte()
        self.carte.set_ptr_partie(self)
        self.nombre_cartes_jouees += 1
        #On gagne en début de partie à partir de la 2e||Toujours mais alors
        #uniquement 2 jokers à la premiere et on en rajoute un ici 2+1=3!
        if(self.nombre_cartes_jouees >= 0):
            self.nb_joker +=1
            
        #donne la référence vers le main à la carte
        self.carte.set_ptr_main(self.ptr_main)
        
        
    def jouerCarte(self):
        '''
        Joue automatiquement toute une partie
        '''
        while(self.carte.existePaireDisponible):
            [[a,b],[c,d]]= self.carte.PaireDisponible
            self.carte.cliquer(a,b)
            self.carte.cliquer(c,d)          
    
    def enchainer_N_cartes(self,n):
        '''
        Joue automatique le nombre de cartes passées en paramètre
        '''
        for k in range(0,n):
            print "carte %d"%(k)
            self.jouerCarte()
            res = self.carte.estCheckmate
            print "checkmate? %r" % (res)
            self.nouvelleCarte()
            
    def clique_droit(self):
        '''
        Clique permettant l'usage d'une aide/ d'un joker afin de cliquer 
        une paire de tuiles qui vont ensemble sur la carte
        '''
        if(self.nb_joker>0):
            #le timer n'est pas un bon indice, il peut etre en train de décrementer car la partie est déjà finie, donc "self.carte.timer > 0" est remplacé
            if(self.carte.existePaireDisponible and not self.carte.est_terminee):
                [[a,b],[c,d]]= self.carte.PaireDisponible
                res1 = self.carte.cliquer(a,b)
                res2 = self.carte.cliquer(c,d)
                if(res2 != 0):
                    print "joker n'a pas fonctionné comme prévu"
                else:                    
                    self.nb_joker -= 1
                    print "clique_droit() a utilisé un joker"#debug
            else:
                print "la partie est déjà terminée, rien ne sert d'essayer d'utiliser un joker!"
        else:
            print "0 joker disponible"
            return -1
